I'm pretty new to R, and was wondering if there is a way to store vectors in a data frame such that each entry of the data frame is a vector.
I want to assign the entry to a vector, and be able to change it later:
df[2,]$Value <- c(1,2,0)
df[3,]$Value <- c(0,0,1)
df[3,]$Value <- df[3,]$Value + c(2,4,4)
But can only make this work as replacing 3 different entries in the data frame. Does anyone know if this is possible?
df:
V1 V2 V3
1 c(1,2) c(2,3) c(0,0)
2 c(1,1) c(0,0) c(2,2)
The Data frame can be converted from vectors in R. To create a data frame in R using the vector, we must first have a series of vectors containing data. The data. frame() function is used to create a data frame from vector in R.
Data Frames A data frame is a tabular data structure, consisting of rows and columns and implemented as a list. The columns of a data frame can consist of different data types but each column must be a single data type [like a vector].
frame columns are: All columns in a data frame have the same length. (true, but with an asterisk) All columns in a data frame are vectors with type (see help(typeof) ) and class (see help(class) ) deriving from one of the primitive types (such as: numeric, logical, factor and character and so on).
To append a column to the data frame in R, use the symbol $ to append the data frame variable and add a column. Then, create a new vector that acts as a column and add that vector to the existing data frame in a column.
You cannot have a 3D data frame. You can achieve this many ways but the easiest one to explain conceptually would probably be to have a list within a list:
> entries <- list(V1=list(c(1,2), c(1,1)), V2=list(c(2,3), c(0,0)), V3=list(c(0,0),c(2,2)))
> entries
$V1
$V1[[1]]
[1] 1 2
$V1[[2]]
[1] 1 1
$V2
$V2[[1]]
[1] 2 3
$V2[[2]]
[1] 0 0
$V3
$V3[[1]]
[1] 0 0
$V3[[2]]
[1] 2 2
Now lets say you want to change the second entry of V1 you would simply do
entries$V1[[2]] <- c(2,2)
or
entries[[1]][[2]] <- c(2,2)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With