Causal inference from a cross sectional study design As far I know, causal inference can be made only from longitudinal study designs. Is there any way to make causal inference from a cross sectional study design? If yes, how can I do this? Please share if any literature is available.  
 A: To quote John Tukey:

The combination of some data and an aching desire for an answer does
not ensure that a reasonable answer can be extracted from a given body
of data.

That is, there does not exist a statistical method that is a simple as
causal_effect y x, int_validity="high" ext_validity="high"
If any one claims to have something like this, it's most likely snake oil. In some special settings, you can occasionally learn something about some types of causal effects from a cross-section, but your description is much too vague to recommend a particular course of action.
To start down this road, I would take a gander at:

*

*Lance, P., D. Guilkey, A. Hattori and G. Angeles. (2014). How do we
know if a program made a difference? A guide to statistical methods
for program impact evaluation. Chapel Hill, North Carolina:
MEASURE Evaluation.

*Morgan, Stephen L. and Christopher Winship. 2015. Counterfactuals
and Causal Inference: Methods and Principles for Social Research
(Second Edition, Revised and Enlarged). Cambridge: Cambridge
University Press.

The first is an accessible free pdf, the second is a more challenging book.
A: You could also use pcalg package if you are interested in network analysis(graphical modeling) and creating directed causal networks. pcalg has several algorithms  for observational(cross sectional) data.
With assumption of no hidden variable, you could use "pc" algorithm in the package to estimate the equivalence class of a directed acyclic graph (DAG) from observational data. Depending on your variable having Gaussian distribution, discrete(ordinal) or binary you could use different conditional independence functions in the package.
for example using the database that comes with the package(gmG) you could do the following for the above mentioned 3 types of variables (these are modified examples from package pdf):
library(pcalg)
## Using Gaussian Data
##################################################
## Load predefined data
data(gmG)
n <- nrow (gmG8$ x)
V <- colnames(gmG8$ x) # labels aka node names
## estimate CPDAG
pc.fit <- pc(suffStat = list(C = cor(gmG8$x), n = n),
indepTest = gaussCItest, ## indep.test: partial correlations
alpha=0.01, labels = V, verbose = TRUE)
if (require(Rgraphviz)) {
## show estimated CPDAG
## par(mfrow=c(1,2))
plot(pc.fit, main = "Estimated CPDAG")
## CPDAG stands for completed partially directed acyclic graph(CPDAG) or 
## basically what pc algorithm computes for you. 
}
##################################################
## Using discrete data
##################################################
## Load data
data(gmD)
V <- colnames(gmD$x)
## define sufficient statistics
suffStat <- list(dm = gmD$x, nlev = c(3,2,3,4,2), adaptDF = FALSE)
## estimate CPDAG
pc.D <- pc(suffStat,
## independence test: G^2 statistic
indepTest = disCItest, alpha = 0.01, labels = V, verbose = TRUE)
if (require(Rgraphviz)) {
## show estimated CPDAG
## par(mfrow = c(1,2))
plot(pc.D, main = "Estimated CPDAG")
## plot(gmD$g, main = "True DAG")
}
##################################################
## Using binary data
##################################################
## Load binary data
data(gmB)
V <- colnames(gmB$x)
## estimate CPDAG
pc.B <- pc(suffStat = list(dm = gmB$x, adaptDF = FALSE),
indepTest = binCItest, alpha = 0.01, labels = V, verbose = TRUE)
pc.B
if (require(Rgraphviz)) {
## show estimated CPDAG
plot(pc.B, main = "Estimated CPDAG")
## plot(gmB$g, main = "True DAG")
}
###########

